package com.turing.post.common.util;

import java.math.BigInteger;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 操作员表dao接口
 * 
 * @author zxppanda
 * 
 */

@Remote
@Local
public interface SysOpUserDao {

	/**
	 * 根据用户主键编号查询用户信息
	 * 
	 * @param operId
	 *            用户主键编号
	 * @return 用户对象
	 */
	public SysOpUser getSysOpUserByOperId(BigInteger operId);

	/**
	 * 根据用户登录名查询用户信息
	 * 
	 * @param operLogonName
	 *            用户登录名
	 * @return 用户对象
	 */
	public SysOpUser getSysOpUserByOperLogonName(String operLogonName);

	/**
	 * 登录界面找回密码时根据用户登录名查询安全问题
	 * 
	 * @param operLogonName
	 *            用户登录名
	 * @return 用户不存在返回null
	 */
	public SysOpUser getQuestionByByOperLogonName(String operLogonName);

	/**
	 * 查询平台管理员以及发卡商管理员
	 * 
	 * @param isSysBranch
	 *            true 平台管理员 查询所有发卡商管理员 false 发卡商管理员
	 * @param page
	 *            页码
	 * @return 分页用户记录列表
	 */
	public List<SysOpUser> getSysAndIssueSysOpUserList(boolean isSysBranch,
			Integer page);

	/**
	 * 查询平台管理员以及发卡商管理员记录数
	 * 
	 * @param isSysBranch
	 *            true 平台管理员 查询所有发卡商管理员 false 发卡商管理员
	 * @return 记录数
	 */
	public BigInteger getSysAndIssueSysOpUserTotal(boolean isSysBranch);

	/**
	 * 分页查询发卡商操作员以下所有操作员 第一次点菜单进入如果branchNo为空时webInput必须附上登录用户归属机构号
	 * 
	 * @param webInput
	 *            日志记录对象
	 * @param branchNo
	 *            机构号
	 * @param status
	 *            状态
	 * @param page
	 *            页码
	 * @return 分页用户记录列表
	 */
	public List<SysOpUser> getSysOpUserList(PCPSWebInput webInput,
			String branchNo, String status, Integer page);

	/**
	 * 查询用户表记录条数
	 * 
	 * @param webInput
	 *            日志记录对象
	 * @param branchNo
	 *            机构号
	 * @param status
	 *            状态
	 * @return 记录数
	 */
	public BigInteger getSysOpUserTotal(PCPSWebInput webInput, String branchNo,
			String status);

	/**
	 * 查询主键最大值
	 * 
	 * @return
	 */
	public BigInteger getMaxOperId();

	/**
	 * 新增用户
	 * 
	 * @param SysOpUser
	 * @return
	 * @throws PCPSApplicationException
	 */
	public void insertSysOpUserInfo(SysOpUser sysOpUser)
			throws PCPSApplicationException;

	/**
	 * @修改用户
	 * @param SysOpUser
	 * @throws PCPSApplicationException
	 */
	public void updateSysOpUserInfo(SysOpUser sysOpUser)
			throws PCPSApplicationException;

	/**
	 * @删除用户
	 * @param menuId
	 * @throws PCPSApplicationException
	 */
	public void deleteSysOpUser(BigInteger operId)
			throws PCPSApplicationException;

	/**
	 * 根据发卡商编号查询网站代理用户
	 * 
	 * @param issueCompanyNo
	 * @return
	 */
	public SysOpUser getInternetAgentSysOpUserByIssueCompany(
			String issueCompanyNo);
}